¡Bienvenidas nuevamente!

Hoy veremos otro tipo de objetos en python llamados listas y además empezaremos a tomar decisiones con expresiones condicionales.

¿Y qué pasa si queremos coleccionar valores? Acerca de las listas...

En la reunión pasada vimos que en python podemos tener diversos tipos de objetos numéricos, booleanos y de caracteres. Incluso aprendimos cómo guardar estos valores en variables, pero que pasa si queremos operar no sólo con un valor sino con una colección de valores. Para este caso hay otro tipo de objetos y el primero que veremos se llama lista.

En python una lista es una secuencia de elementos mutables que llevan asignados un índice. Para crear una lista en python los que se hace es empezar con corchetes que van a ser llenados con valores separados por una coma, éstos valores no necesitan ser del mismo tipo para poder habitar en la misma lista.

Veamos unos ejemplos...


In [ ]:
lista1 = ["Hola", 1, 2.0, True]

In [ ]:
lista1

In [ ]:
lista2 = [2+3, 5+1, 4**2]

In [ ]:
lista2

Vamos a explorar ahora la parte de los índices y mutabilidad en una lista

Para acceder a un valor en una lista podemos hacer uso de los índices. Los índices empiezan desde cero.


In [ ]:
#Para especificar que queremos acceder a un valor en python, el objeto es seguido de corchetes con el índice deseado
lista1[0]

In [ ]:
lista2[2]

In [ ]:
#¿Qué pasa si damos un índice que no tiene un valor?
lista1[4]

¡Obvio! nos da un error de índice... Y nos dice qué está fuera del rango de valores que tenemos guardados en la lista

También tenemos acceso a un rango de valores


In [ ]:
#Vamos a pedirle a python que nos muestre los primero tres elementos de la lista1
lista1[0:3]

Pregunta 1.

Ya vimos que lista1 posee elementos con índices del 0 al 3, ¿por qué te imaginas que en la expresión anterior no nos mostró el último elemento si le pedimos ver del 0:3?


In [ ]:
#Veamos que pasa si le damos un índice mayor, a pesar de que sabemos que lista1[4] nos da un error
lista1[0:4]

In [ ]:
#Otra forma de mostrar todos los elementos es con ":"
lista2[:]

In [ ]:
#Aquí le estamos pidiendo a python que nos de todos los elementos de la lista menos el primero
lista1[1:]

In [ ]:
#Si queremos ver el último elemento pero no sabemos cuántos hay en una lista podemos usar el siguiente truco
lista1[-1]

Pregunta 2.

¿Es posible ir saltando un número en el rango con el que seleccionamos las listas? Esto es cómo pedirle a python (si es posible) que me de los elementos con índices pares del rango 1:6 (los índices 2, 4 y 6)


In [ ]:
#Si no sabemos un índice, pero sabemos que hay un valor en una lista podemos preguntarle a python cuál es ese índice 
#esto nos dice el índice del primer elemento que se encuentre con ese valor
#(si hay valores repetidos nos da el de menor índice)
lista1.index(2.0)

In [ ]:
lista2.index(5)

Pregunta 3.

¿Qué resultaría de la siguiente expresión? lista1[::-1]

La parte "mutable" de las listas significa que podemos alterar el contenidos de estas al agregar elementos a la colección y/o cambiando el valor de algunos elementos.

Veamos como agregar elementos a las listas. Para esto usaremos el método .append(elemento) que tienen las listas


In [ ]:
lista1.append("nuevo")

In [ ]:
lista1

Como lo has de haber notado, el elemento nuevo que agregaste se va al final de la lista. Si quisieras que tu nuevo elemento estuviera en una posición específica tendrías que usar el método .insert(índice, elemento)


In [ ]:
lista1.insert(2, "soy")

In [ ]:
lista1

Hay ocasiones en las que no quieres agregar nuevos elementos, pero alterar el valor que tenías de los mismos, para esto puedes accesar por índice al elemento que quieras y directamente asignarle otro valor


In [ ]:
lista1[-1]='Nuevo'

In [ ]:
lista1

Pregunta 4

¿Cómo le harías para borrar elementos de una lista?

Pista: del y remove


In [ ]:


In [ ]:

Pregunta 5

Crea una lista nueva que se llame "copia" de la lista2


In [ ]:


In [ ]:

Expresiones condicionales

Imagina que estás en una calle a punto de cruzarla, ¿Qué es lo que te hace decidir si la cruzas o no?

Lo mismo sucede con python. En este caso le tienes que dar ciertas condiciones que deben ser cumplidas, esto es que al evaluar una expresión, esta resulte en un cierto valor o en True para que siga con una operación. Si es necesario también se le pueden dar instrucciones para cuando la condición no sea cumplida.

Veamos unos ejemplos


In [ ]:
#Crea un elemento nuevo en una lista si la longitud es menor a 7 elementos
if len(lista1) < 7:
    lista1.append('elemento')

In [ ]:
#Veamos qué pasó con lista1
lista1

In [ ]:
del(lista1[5])

In [ ]:
lista1

In [ ]:
#Si el primer valor de una lista es integer conviértelo a float, de lo contratio conviértelo a integer
if type(lista2[0]) is int:
    lista2[0] = float(lista2[0])
else:
    lista2[0] = int(lista2[0])

In [ ]:
#Veamos cómo quedó la lista 2
lista2

Aquí hay unas cosas que notar:

1. La estructura inicial de una expresión condicional es if <condición> :
2. Después de esto hay un espacio que nos indica que el código que escribiremos forma parte del condicional
3. La expresión se puede terminar ahí o podemos darle otra instrucción con else: (nótese que else se encuentra al mismo nivel que if)
4. El código que forma parte de else lleva también un espacio (estos espacios son llamados indentación)

Pregunta 6

¿Qué pasa si tengo más de una condición que debe ser cumplida?